<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/2/24
 * Time: 3:17
 */

namespace App\Services\System;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Facade;

abstract class BaseService extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return self::getModel();
    }

    abstract protected static function getModel();

//    /**
//     * 获取模型实例
//     * User: hjt
//     * Date Time: 2019/3/24 23:13
//     */
//    public function getModelInstance()
//    {
//        $modelName = static::getModel();
//        return new $modelName;
//    }
//
//    /**
//     * 将orderby数组转化为适配orm
//     * User: hjt
//     * Date Time: 2019/3/24 23:42
//     */
//    protected function transferOrderBy(Builder $query, array $orderBy)
//    {
//        if (is_array($orderBy)) {
//            foreach ($orderBy as $k => $v) {
//                $query = $query->orderBy($k, $v);
//            }
//        }
//        return $query;
//    }
//
//    /**
//     * 根据id查询一条记录
//     * User: hjt
//     * Date Time: 2019/3/24 23:10
//     */
//    public function getInfoById($id)
//    {
//        /* @var $model Model */
//        $model = $this->getModelInstance();
//        return $model->find($id);
//    }
//
//    /**
//     * 根据条件查询一条记录
//     * User: hjt
//     * Date Time: 2019/3/24 23:10
//     */
//    public function getInfoByCondition(array $where = [], string $fields = '*', array $orderBy = ['id' => 'desc'])
//    {
//        /* @var $model Model */
//        $model = $this->getModelInstance();
//        $query = $model->where($where)->select($fields);
//        return $this->transferOrderBy($query, $orderBy)->first();
//    }
//
//    /**
//     * 根据条件查询所有符合条件的数据
//     * User: hjt
//     * Date Time: 2019/3/24 23:11
//     */
//    public function getList(array $where = [], string $fields = '*', array $orderBy = ['id' => 'desc'])
//    {
//        /* @var $model Model */
//        $model = $this->getModelInstance();
//        $query = $model->where($where)->select($fields);
//        return $this->transferOrderBy($query, $orderBy)->get();
//    }
//
//    /**
//     * 根据条件查询所有符合条件的数据并分页
//     * User: hjt
//     * Date Time: 2019/3/24 23:11
//     */
//    public function getListWithPage(array $where = [], $offset = 0, $limit = 10, string $fields = '*', array $orderBy = ['id' => 'desc'])
//    {
//        /* @var $model Model */
//        $model = $this->getModelInstance();
//        $query = $model->where($where)->select($fields);
//        return $this->transferOrderBy($query, $orderBy)->offset($offset)->limit($limit)->paginate();
//    }
}